// 定义帖子数据结构接口，增强代码可读性和健壮性
interface IPost {
  id: number;
  content: string;
  price: number;
  images: string[];
  status: 'pending' | 'approved' | 'restricted'; // 待审核 | 通过 | 限制
  loading: boolean;
}

Page({
  data: {
    postList: [] as IPost[],
    currentPage: 1, // 【新增】用于模拟分页的页码
  },

  onLoad() {
    this.fetchAuditList();
  },

  /**
   * @description 获取待审核列表数据
   * 【修改】此函数现在可以模拟分页加载
   */
  fetchAuditList() {
    wx.showLoading({ title: '加载中...' });

    const pageToFetch = this.data.currentPage;
    console.log(`[Audit] Fetching data for page: ${pageToFetch}`);

    // 模拟API延时
    setTimeout(() => {
      // --- 模拟不同页码的数据 ---
      const mockDataPage1: IPost[] = [
        { id: 1, content: '全新未拆的AirPods Pro，音质超棒，因为有多的所以出掉一个，同城可自提。', price: 1200, images: ['https://img.yzcdn.cn/vant/leaf.jpg', 'https://img.yzcdn.cn/vant/tree.jpg', 'https://img.yzcdn.cn/vant/sand.jpg'], status: 'pending', loading: false },
        { id: 2, content: '九成新山地自行车，骑行不到100公里，带价来询。', price: 800, images: ['https://img.yzcdn.cn/vant/cat.jpeg', 'https://img.yzcdn.cn/vant/dog.jpeg'], status: 'pending', loading: false },
      ];
      const mockDataPage2: IPost[] = [
        { id: 3, content: '出一部闲置的Kindle，带保护套，几乎没用过，看书体验很好。', price: 500, images: ['https://img.yzcdn.cn/vant/cherry.jpeg', 'https://img.yzcdn.cn/vant/apple.jpeg'], status: 'pending', loading: false },
        { id: 4, content: '求购一张演唱会门票，前排优先，价格好商量！', price: 1500, images: [], status: 'pending', loading: false },
        { id: 5, content: '自家种的有机蔬菜，绿色健康，需要的邻居可以联系我。', price: 20, images: ['https://img.yzcdn.cn/vant/orange.jpeg'], status: 'pending', loading: false },
      ];

      let newData: IPost[] = [];
      if (pageToFetch === 1) {
        newData = mockDataPage1;
      } else if (pageToFetch === 2) {
        newData = mockDataPage2;
      }
      // 如果 pageToFetch > 2, newData 将是空数组, 模拟没有更多数据

      this.setData({
        postList: newData,
        // 如果成功获取到数据，则页码+1，为下一次请求做准备
        currentPage: newData.length > 0 ? pageToFetch + 1 : pageToFetch,
      });

      wx.hideLoading();

      // 【新增】如果没有更多数据了，给一个提示
      if (newData.length === 0 && pageToFetch > 1) {
        wx.showToast({
          title: '已全部审核完毕',
          icon: 'none',
        });
      }
    }, 1000);
  },

  /**
   * @description 处理 "限制" 按钮点击
   */
  handleRestrict(e: WechatMiniprogram.TouchEvent) {
    const { id } = e.currentTarget.dataset;
    wx.showModal({
      title: '确认操作',
      content: '确定要限制该帖子吗？该操作不可撤销。',
      confirmText: '确认限制',
      confirmColor: '#f56c6c',
      success: (res) => {
        if (res.confirm) {
          this.submitAudit(id, 'restricted');
        }
      },
    });
  },

  /**
   * @description 处理 "无异样" 按钮点击
   */
  handleApprove(e: WechatMiniprogram.TouchEvent) {
    const { id } = e.currentTarget.dataset;
    this.submitAudit(id, 'approved');
  },

  /**
   * @description 提交审核结果的核心函数
   */
  submitAudit(id: number, status: 'approved' | 'restricted') {
    const { postList } = this.data;
    const index = postList.findIndex(item => item.id === id);

    if (index === -1) return;

    this.setData({
      [`postList[${index}].loading`]: true,
    });
    
    setTimeout(() => {
      this.setData({
        [`postList[${index}].status`]: status,
        [`postList[${index}].loading`]: false,
      });

      wx.showToast({
        title: '操作成功',
        icon: 'none',
      });

      // 【新增】检查是否所有帖子都已审核完毕
      this.checkAndRefreshList();
    }, 500);
  },

  /**
   * 【新增】检查列表是否全部审核完成，并触发刷新
   */
  checkAndRefreshList() {
    // 使用 wx.nextTick 确保在 setData 渲染完成后再执行检查
    wx.nextTick(() => {
      const { postList } = this.data;
      if (postList.length === 0) return; // 如果列表为空，不执行操作

      const allAudited = postList.every(item => item.status !== 'pending');

      if (allAudited) {
        console.log('[Audit] All items in this batch are audited. Fetching next batch.');
        
        // 给予用户积极反馈，并告知下一步操作
        wx.showToast({
          title: '本批已完成',
          icon: 'success',
          duration: 1500,
        });

        // 延迟1.5秒再加载下一页，给用户反应时间，体验更平滑
        setTimeout(() => {
          this.fetchAuditList();
        }, 1500);
      }
    });
  },

  /**
   * @description 预览图片
   */
  previewImage(e: WechatMiniprogram.TouchEvent) {
    const { current, urls } = e.currentTarget.dataset;
    wx.previewImage({
      current,
      urls,
    });
  },
});
